import typing
from provate import listNode

# 题目：在O(1)时间内，删除列表的节点
# 给定单向链表的头指针和一个结点指针，定义一个函数在O（1）时间内删除该节点

# 可以直接把要被删除的目标节点a的下一个节点b的内容复制到a中，再将a的指针指向b的下一个节点，就简单的完成了对a节点的删除
# 考虑要删除的节点是尾节点的情况
# 目标节点既是头节点也是尾节点的情况

def delete_node(head:listNode, tobe_delete:listNode):
    if not head or not tobe_delete:
        return None

    if tobe_delete.next is not None:
        p_next = tobe_delete.next
        tobe_delete.value = p_next.value
        tobe_delete.next = p_next.next

    elif head == tobe_delete:
        head = None
    else:
        pnode = head

        while pnode.next != tobe_delete:
            pnode = pnode.next
        pnode.next = None


